#ifndef SHAPE_H
#define SHAPE_H
#include <iostream>
#include <vector>
#include <QPoint>
#include <map>

using namespace std;

class Shape
{
public:
    Shape(const QPoint& h, const vector<vector<QPoint>> &ord);
    Shape(const Shape &s);
    Shape& downStep();
    Shape& leftStep();
    Shape& rightStep();
    QPoint getHead() const;
    void turnStep();
    vector<QPoint> getCurIter();
    QPoint getLeftOrder() const;
    QPoint getRightOrder() const;
    QPoint getUpOrder() const;
    vector<QPoint> getDownOrderVector() const;
    vector<QPoint> getLeftOrderVector() const;
    vector<QPoint> getRightOrderVector() const;
    Shape& setHead(const QPoint &p);
private:
    vector<vector<QPoint>>::iterator iter;
    QPoint head = {0,0};
    vector<vector<QPoint>> order;
};

#endif // SHAPE_H
